/*
 * L'Box v0.0.5
 * jQuery plagin
 * OmegaScorp
 */
(function($){
    $.lbox_options=[];
    $.fn.lbox=function(opt, param){
        if($(this).attr('lpng')!=undefined){
            return $(this).lbox_api(opt, param);
        }
        else{
            return $(this).lbox_init(opt);
        }
    }
    $.fn.lbox_init=function(opt){
        var index=$.lbox_options.length;
        $.lbox_options[index]=$.extend({
            'loader': 'loader.png',
            'zindex': 990
        },opt);
        $(this).attr('lbox', index);
        var options=$.lbox_options[index];
        var images=$(this);
        if($('.lbox_window').length==0){
            $('body').append('<div class="lbox"></div><div id="lbox_loader"></div><div class="lbox_window"><img class="image" src="" alt="image" /></div>');
            $('.lbox_window').hide();
            $('#lbox_loader').lpng({
                url: options.loader
            });
            $('.lbox_window img.image').hide();
            $('.lbox').css({
                'position':'fixed',
                'background':'black',
                'height': $(window).height()+'px',
                'width': $(window).width()+'px',
                'left': '0px',
                'top': '0px',
                'opacity': 0.2,
                'display': 'none',
                'z-index': options.zindex
            });
            if($.browser.msie){
                $('.lbox').css({
                    'position': 'absolute',
                    'height': $(document).height()+'px'
                });
            }
        }
        setTimeout(function(){
            init();
        },100);
        init=function(){
            if($('#lbox_loader').lpng('ready')){
                width=$('#lbox_loader').lpng('width');
                height=$('#lbox_loader').lpng('height');
                $('.lbox_window').css({
                    'position': 'fixed',
                    'left': $(window).width()/2-width/2+'px',
                    'top': $(window).height()/2+-height/2+'px',
                    'width': width+'px',
                    'height': height+'px',
                    'z-index': options.zindex+1
                });
                $('#lbox_loader').css({
                    'position': 'absolute',
                    'left': $(window).width()/2-width/2+'px',
                    'top': $(window).height()/2-height/2+'px',
                    'z-index': options.zindex+2
                });
                $('#lbox_loader').lpng('hide');
                if($.browser.msie){
                    $('.lbox_window').css({
                        'position': 'absolute'
                    });
                }
                $('.lbox_window img.image').width(width).height(height);
                images.each(function(){
                    $(this).click(function(){
                        $('.lbox_window').show();
                        $('.lbox').show();
                        src=$(this).attr('href');
                        $('#lbox_loader').lpng('show');
                        img=new Image();
                        img.onload=function(){
                            iwidth=img.width;
                            iheight=img.height;
                            wwidth=$(window).width();
                            wheight=$(window).height();
                            
                            k=iwidth/iheight;
                            
                            if(iwidth>iheight&&iwidth>wwidth-40){
                                iwidth=wwidth-40;
                                iheight=iwidth*k;
                            }
                            else if(iheight>iwidth&&iheight>wheight-40){
                                iheight=wheight-40;
                                iwidth=iheight*k;
                            }
                            
                            $('#lbox_loader').lpng('hide');
                            $('.lbox_window img.image').show();
                            $('.lbox_window img.image').attr('src', src)
                            .animate({
                                'width': iwidth,
                                'height': iheight
                            }, 1000);
                            if($.browser.msie){
                                $('.lbox_window')
                                .animate({
                                    'left': $(window).scrollLeft()+$(window).width()/2-iwidth/2+'px',
                                    'top': $(window).scrollTop()+$(window).height()/2-iheight/2+'px'
                                }, 1000);
                            }
                            else{
                                $('.lbox_window')
                                .animate({
                                    'left': $(window).width()/2-iwidth/2+'px',
                                    'top': $(window).height()/2-iheight/2+'px'
                                }, 1000);
                            }
                        };
                        img.src=src;
                        return false;
                    });
                });
                $('.lbox').click(function(){
                    $(this).hide();
                    width=$('#lbox_loader').lpng('width');
                    height=$('#lbox_loader').lpng('height');
                    $('.lbox_window')
                    .css({
                        'left': $(window).width()/2-width/2+'px',
                        'top': $(window).height()/2+-height/2+'px'
                    }).hide();
                    $('.lbox_window img.image').css({
                        'width': width+'px',
                        'height': height+'px'
                    });
                });
            }
            else{
                setTimeout(function(){
                    init();
                },100);
            }
        }
    }
})(jQuery);